package com.gl.glbooks.vos;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;

@Entity
public class Usuario implements Serializable{

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	private boolean estadoAlta;
	private String nombreUsuario;
	private String correoElectronico;
	private String responsabilidad;
	private String idioma;
	@ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.MERGE})
	private Oficina oficina;

	@ManyToMany(targetEntity=Categoria.class,cascade={CascadeType.PERSIST, CascadeType.MERGE})
	@JoinTable( name="USUARIO_NOVEDADES",joinColumns={@JoinColumn(name="USUARIO_ID")},
				inverseJoinColumns={@JoinColumn(name="CATEGORIA_ID")})
	private List<Categoria> novedades;

	public void setEstadoAlta(boolean estadoAlta) {
		this.estadoAlta = estadoAlta;
	}
	public boolean getEstadoAlta() {
		return estadoAlta;
	}
	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}
	public String getNombreUsuario() {
		return nombreUsuario;
	}
	public void setResponsabilidad(String responsabilidad) {
		this.responsabilidad = responsabilidad;
	}
	public String getResponsabilidad() {
		return responsabilidad;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Long getId() {
		return id;
	}
	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}
	public String getIdioma() {
		return idioma;
	}
	
	public boolean isIngles()
	{
		return idioma.equals("ingles");
	}
	
	public void addNovedad(Categoria categoria){
		novedades.add(categoria);
	}
	
	public void removeNovedad(Categoria categoria){
		novedades.remove(categoria);
	}
	
	public List<Categoria> getNovedades(){
		return novedades;
	}
	
	public void setNovedades(List<Categoria> novedades){
		this.novedades=novedades;
	}
	public void setCorreoElectronico(String correoElectronico) {
		this.correoElectronico = correoElectronico;
	}
	public String getCorreoElectronico() {
		return correoElectronico;
	}
	public void setOficina(Oficina oficina) {
		this.oficina = oficina;
	}
	public Oficina getOficina() {
		return oficina;
	}
	
}
